package cc.cix.gt.org.service;

import cc.cix.gt.common.entity.ResultPage;
import cc.cix.gt.common.exception.SystemException;
import cc.cix.gt.org.dto.query.QueryUserReq;
import cc.cix.gt.org.dto.request.LoginReq;
import cc.cix.gt.org.dto.response.LoginResp;
import cc.cix.gt.org.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author cix
 */
public interface IUserService extends IService<User> {

    /**
     * 用户登录
     *
     * @param request http请求对象
     * @param dto     登录请求
     * @return 登录结果
     */
    LoginResp login(HttpServletRequest request, LoginReq dto);

    /**
     * 查找用户详细信息
     *
     * @param dto 查询对象
     * @return IPage
     */
    ResultPage<User> listUser(QueryUserReq dto);

    /**
     * 新增用户
     *
     * @param user user
     */
    void createUser(User user) throws SystemException;

    /**
     * 根据手机号获取用户信息
     *
     * @param mobile 手机号
     * @return 用户
     */
    User getUserByMobile(String mobile);

    /**
     * 修改用户
     *
     * @param user user
     */
    void updateUser(User user);

    /**
     * 删除用户
     *
     * @param userIds 用户 id 集合
     */
    void deleteUserByIds(List<String> userIds);

    /**
     * 更新个人信息
     *
     * @param user 个人信息
     * @throws SystemException 异常
     */
    void updateProfile(User user) throws SystemException;

    /**
     * 注册用户
     *
     * @param user 用户
     */
    void registerUser(User user);

    /**
     * 更新当前用户密码
     *
     * @param password 新密码
     */
    void updatePassword(String password);

    /**
     * 重置当前用户密码
     *
     * @param username 用户名
     */
    void resetPassword(String username);

}
